/**
 * 第26章 函数式编程之26.4 组合式异步编程
 * 代码清单-p3ch26b-659页a：基本的任务执行服务 {@link top.kaoshanji.p3ch26b.BasicFutureDemo}
 * 代码清单-p3ch26b-660页a：使用 Supplier 表示异步任务 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo}
 * 代码清单-p3ch26b-660页b：使用 CompletableFuture 调用外部服务 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#callExternalService()}
 * 代码清单-p3ch26b-661页a：使用 FutureTask 调用外部服务 {@link top.kaoshanji.p3ch26b.BasicFutureDemo#callExternalService2()}
 * 代码清单-p3ch26b-662页a：使用 CompletableFuture 也可以直接创建线程，并返回结果 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#callExternalService2()}
 * 代码清单-p3ch26b-662页b：whenComplete方法示例 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#whenCompleteDemo()}
 * 代码清单-p3ch26b-663页a：handle方法示例 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#handleDemo()}
 * 代码清单-p3ch26b-664页a：在一个阶段正常完成后，执行下一个任务 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#taskStreamThenRun()}
 * 代码清单-p3ch26b-665页a：如果下一个任务需要前一个阶段的结果作为参数 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#taskStreamThenApply()}
 * 代码清单-p3ch26b-665页b：与thenApply类似，还有一个方法thenCompose {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#taskStreamThenCompose()}
 * 代码清单-p3ch26b-666页a：构建依赖两个阶段的任务流 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#taskStreamThenCombine()}
 * 代码清单-p3ch26b-667页a：构建依赖多个阶段的任务流 {@link top.kaoshanji.p3ch26b.BasicCompletableFutureDemo#taskStreamAllOf()}
 * author kaoshanji
 * ^_^
 * create time 2025/3/4 18:08
 */
package top.kaoshanji.p3ch26b;